# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Language.V2.Model.XPSTextExtractionEvaluationMetrics do
  @moduledoc """


  ## Attributes

  *   `bestF1ConfidenceMetrics` (*type:* `GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry.t`, *default:* `nil`) - Values are at the highest F1 score on the precision-recall curve. Only confidence_threshold, recall, precision, and f1_score will be set.
  *   `confidenceMetricsEntries` (*type:* `list(GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry.t)`, *default:* `nil`) - If the enclosing EvaluationMetrics.label is empty, confidence_metrics_entries is an evaluation of the entire model across all labels. If the enclosing EvaluationMetrics.label is set, confidence_metrics_entries applies to that label.
  *   `confusionMatrix` (*type:* `GoogleApi.Language.V2.Model.XPSConfusionMatrix.t`, *default:* `nil`) - Confusion matrix of the model, at the default confidence threshold (0.0). Only set for whole-model evaluation, not for evaluation per label.
  *   `perLabelConfidenceMetrics` (*type:* `%{optional(String.t) => GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry.t}`, *default:* `nil`) - Only recall, precision, and f1_score will be set.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :bestF1ConfidenceMetrics =>
            GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry.t() | nil,
          :confidenceMetricsEntries =>
            list(GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry.t()) | nil,
          :confusionMatrix => GoogleApi.Language.V2.Model.XPSConfusionMatrix.t() | nil,
          :perLabelConfidenceMetrics =>
            %{optional(String.t()) => GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry.t()}
            | nil
        }

  field(:bestF1ConfidenceMetrics, as: GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry)

  field(:confidenceMetricsEntries,
    as: GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry,
    type: :list
  )

  field(:confusionMatrix, as: GoogleApi.Language.V2.Model.XPSConfusionMatrix)

  field(:perLabelConfidenceMetrics,
    as: GoogleApi.Language.V2.Model.XPSConfidenceMetricsEntry,
    type: :map
  )
end

defimpl Poison.Decoder, for: GoogleApi.Language.V2.Model.XPSTextExtractionEvaluationMetrics do
  def decode(value, options) do
    GoogleApi.Language.V2.Model.XPSTextExtractionEvaluationMetrics.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Language.V2.Model.XPSTextExtractionEvaluationMetrics do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
